import cv2
import os
from datetime import datetime
import time

def capture_photo():
    # 初始化摄像头 (0表示默认摄像头)
    cap = cv2.VideoCapture(0)
    
    if not cap.isOpened():
        print("无法打开摄像头")
        return None
    
    # 等待摄像头预热
    for _ in range(10):
        cap.read()
    
    # 读取一帧图像
    ret, frame = cap.read()
    
    # 释放摄像头
    cap.release()
    
    if not ret:
        print("无法获取画面")
        return None
        
    # 创建photos文件夹（如果不存在）
    if not os.path.exists('photos'):
        os.makedirs('photos')
    
    # 生成文件名（使用当前时间）
    filename = f"photos/photo_{datetime.now().strftime('%Y%m%d_%H%M%S')}.jpg"
    
    # 保存照片
    cv2.imwrite(filename, frame)
    print(f"照片已保存: {filename}")
    
    return filename

def get_video():
    cap=cv2.VideoCapture(0)  #0代表树莓派上自带的摄像头，1代表USB摄像头

    #一下cap.set(),可以注释掉#
    # cap.set(3,320)#摄像头采集图像的宽度320
    # cap.set(4,240)#摄像头采集图像的高度240
    # cap.set(5,30) #摄像头采集图像的帧率fps为30

    #查看采集图像的参数
    # print(cap.get(3))
    # print(cap.get(4))
    # print(cap.get(5))

    while(True):
        ret,color_frame=cap.read()
        img1=color_frame
        # img1=cv2.flip(color_frame,0)  #翻转图像，0垂直翻转，1水平翻转，-1水平垂直翻转
        # print(img1)
        cv2.imshow('color_frame',img1)  #展示每一帧
        if cv2.waitKey(1)&0xff==ord('q'): #按Q键退出，可以改成任意键
            break
    cap.release()
    cv2.destroyAllWindows()

# def use_pi_camera():
#     try:
#         from picamera2 import Picamera2``
#         picam2 = Picamera2()
#         picam2.start()
#         time.sleep(1)
#         array = picam2.capture_array("main")
#         picam2.stop()
#         return array
#     except Exception as e:
#         print(f"Pi Camera error: {str(e)}")
#         return None

def get_video_stream():
    """获取视频流"""
    try:
        # 使用普通摄像头
        cap = cv2.VideoCapture(0)
        if not cap.isOpened():
            print("无法打开摄像头")
            return None
        
        ret, frame = cap.read()
        cap.release()
        
        if ret:
            return frame
        return None
        
    except Exception as e:
        print(f"Camera error: {str(e)}")
        return None

if __name__ == "__main__":
    # capture_photo()
    get_video()
    # use_pi_camera()
